package com.hsnn.medstgmini.sys.dao;

import java.util.Date;
import java.util.List;
import java.util.Map;

import com.hsnn.medstgmini.sys.model.SysPrivilege;
import com.hsnn.medstgmini.sys.model.SysRole;
import com.hsnn.medstgmini.sys.model.SysUser;

/**
 * @category 权限
 * @author CCL
 */
public interface SysPrivilegeDao {

	/**
	 * @category 查询权限列表
	 * @return
	 */
	List<SysPrivilege> getPrivilegeList(String roleId);
	
	/**
	 * @category 保存权限
	 * @param privilege
	 * @return
	 */
	SysPrivilege savePrivilege(SysPrivilege privilege);
	
	/**
	 * @category 删除权限
	 * @param privilege
	 */
	void deletePrivilege(SysPrivilege privilege);
	
	/**
	 * @category 查询用户权限列表
	 * @return
	 */
	List<SysPrivilege> getPrivilegeListByUser(SysUser sysUser);
	
	/**
	 * @category 医疗机构、企业查询子角色权限列表
	 * @date 2015年6月16日
	 * @param role当前登陆人角色
	 * @param roleId当前编辑的子角色的id
	 * @return
	 */
	List<SysPrivilege> getPrivilegeListByRole(SysRole role, String roleId);
	
	/**
	 * @category 查询当前登陆用户所属角色的权限（排除新增编辑用户页面所选角色的权限）
	 * @date 2015年6月19日
	 * @param user当前登陆用户
	 * @param roleId新增编辑用户页面所选角色id
	 * @return
	 */
	List<SysPrivilege> getExtraPrivilegeList(SysUser user, String userId, String roleId);
	
	/**
	 * @category 查询主用户权限集合
	 * @date 2015年10月20日
	 * @param user
	 * @param userId
	 * @return
	 */
	List<Map<String, Object>> getMainUserPrivilege(String userId, String roleId);
	
	/**
	 * @category 保存用户权限
	 * @date 2015年10月21日
	 * @param userId
	 * @param adds
	 * @param dels
	 */
	void saveUserPrivilege(String userId, String adds, String dels,Date updTime,String updUser);
	
	/**
	 * @category 查询主用户权限集合
	 * @date 2015年10月20日
	 * @param user
	 * @param userId
	 * @return
	 */
	List<Map<String, Object>> getSubUserPrivilege(String userId);
	
	/**
	 * @category 查询主角色权限集合
	 * @date 2015年10月20日
	 * @param roleId
	 * @return
	 */
	List<Map<String, Object>> getMainRolePrivilege(String roleId);
	
	/**
	 * @category 查询子角色权限集合
	 * @date 2015年10月20日
	 * @param roleId
	 * @return
	 */
	List<Map<String, Object>> getSubRolePrivilege(String roleId,String zhuUserId);
	
	/**
	 * @category 保存角色权限
	 * @date 2015年10月22日
	 * @param roleId
	 * @param adds
	 * @param dels
	 */
	void saveRolePrivilege(String roleId, String adds, String dels, Date updTime,String updUser);
	
	/**
	 * @category 查询子角色权限集合（只读）
	 * @date 2015年10月20日
	 * @param roleId
	 * @return
	 */
	List<Map<String, Object>> getSubRolePrivilegeAsRead(String roleId);
	
	/**
	 * @category 查询主角色权限集合
	 * @date 2015年10月20日
	 * @param roleId
	 * @return
	 */
	List<Map<String, Object>> getMainRolePrivilegeTemp(String roleId);
	
}
